扛住 2019 双 11 流量洪峰,起底支付宝技术两大超级利器!
据普华永道《2020年与未来的金融服务技术:拥抱颠覆者》报告,全球81%的银行CEO在众多领域中最关注科技发展。随着当前人工智能、云计算、大数据、区块链等技术的发展,同时驱动金融行业生态的发展,“无科技不金融”已经成为行业共识。
回顾在刚结束的2019年双11中,天猫当天成交额达2684亿,创历史新高。在技术上,蚂蚁金服OceanBase数据库创下6100万笔/秒数处理峰值的纪录,并实现100%核心业务上云。另外,4亿海淘商品通过区块链技术溯源。
从今年双11我们还发现中国技术点亮全球:海外6个不同版本的支付宝,全天流量是平时的26倍。不仅无科技不金融,而是技术与商业的彼此成就。
支付宝历年技术迭代
从2009年的5200万到2019年2684亿,双11天猫成交额实现跨越式的增长。这背后离不开支付宝工程师的努力,不断进行技术迭代:
2009年:第一代对账系统架构SOA改造。
2010年:对数据库进行垂直拆分和水平扩展。
2011年:搭建起秒级监控保障系统。
2012年:支付宝系统升级。
2013年:搭建起云计算架构;数据中心异地双活方案;SOFA合并部署。
2014年:OceanBase数据库投入使用,处理10%的交易数据链;全链路压测,模拟双11的状态;国际支付系统搭建。
2015年:SOFAStack异地多活架构。
2016年:全球支付网络构建。
2017年:智能客服系统;离在线混合部署;智能风控AlphaRisk助力金融安全;搭建实时金融级分布式图数据库。
2018年:区块链技术;生物支付。
2019年:两大支付宝自研技术不可忽视——创造6100万笔/秒数据处理峰值、TPC-C中跑赢Oracle的OceanBase和金融级云原生架构SOFAStack。
创造6100万笔/秒数据处理峰值、TPC-C中跑赢Oracle的OceanBase是何方神圣?
如今数据处理分为两大类:
一、联机事务处理OLTP(on-line transaction processing),OLTP进行各种交易处理,如银行交易等,是关系型数据库的关键功能。
二、联机分析处理OLAP(On-Line Analytical Processing),OLAP进行各种数据分析处理,进行复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
随着互联网的发展,在短短的时间里交易量和数据量翻了几千倍,传统关系数据库的集中式架构无论是处理能力还是存储能力都不堪重负,之前可以由一个关系数据库系统进行的OLTP+OLAP处理不得不采用两个系统来进行:OLTP依然采用关系数据库(+分库分表),而OLAP则采用数据仓库。
如此一来,造成很大的不便:
交易数据库分库分表后带来一些挑战,如订单号全局唯一,在多个数据库里需在订单号加分库分表的标识位等,这样一来,业务代码需做不少改动。
数据仓库的数据需从交易处理数据库来,这需架设桥梁,把数据从交易数据库抽取、转换、加载到数据仓库,这个过程是非实时。
数据仓库天然是面向某个主题的,多个不同的主题需建设多个数据仓库,这将造成大量的数据冗余;数据仓库也不是实时更新的,无法直接产生实时分析类的结果。
由于交易处理数据库需保证事务特性,即ACID(原子性、一致性、隔离性、持久性),这非常挑战,所以一直以来交易处理数据库是集中式的。 基于此,当蚂蚁金服团队决定做OceanBase数据库,即将原来的集中式交易处理系统变成分布式时,备受质疑。
最终OceanBase排除万难做到了,并实现两个重要目标:水平扩展和高可用。
OceanBase的高可用与水平扩展
从技术上来看,OceanBase是如何实现的?
传统数据库完全依赖于硬件的高可用,本身在高可用上是缺失的。传统数据库主备镜像是主库做事务,并同步给备库。如果要求备库跟主库完全一致,每一笔事务都要实时同步给备库。如果备库出现异常或者主备库之间的网络异常,主库上的事务就会积压,可能将在很短时间内撑爆主库,导致业务不可用。
OceanBase摒弃了传统的主备镜像,通过分布式一致性协议在数据库软件上实现了高可用:即在传统主备镜像的基础上增加一个备库,主库同步事务到两个备库,只要有一个备库收到,加上主库自己至少两个库收到就可以。如此一来,每一笔事务至少在三个库中的两个库落地,任何一个库出问题了,每笔交易至少存在于一台机器上,这样便实现高可用。
分布式系统中要做交易处理,分布式事务是必须要迈过去的一个坎。OceanBase的方法是:把原来的每一个物理节点换成一个Paxos组,相当于换成一个虚拟节点,这个虚拟节点背后有3、5个物理节点。根据多数派成功协议,3、5个节点里有2、3个节点写成功的话,这个事务就被判定为成功。
通过Paxos协议的典型三副本部署,不仅保证数据强一致,还并持续可用。主备间自动切换,对上层业务透明。假如遇到单机、机房、城市级的故障,能自动切换,不会停止服务,不丢数据。
OceanBase还通过水平扩展x86服务器来达到无限伸缩,达到了大规模高并发的效果。并同时支持分库分表模式和单库分区表模式等灵活的分布式结构,把数据库粒度的选择权交给用户。
OceanBase的过去与未来
回顾OceanBase的发展,我们亦看到支付宝工程师不断尝试与成长的过程:
在2014年的双11,OceanBase处理10%的交易数据链;2015年的双11,OceanBase处理100%交易数据链和50%支付数据链;2016年双11,OceanBase处理全部交易数据链和支付数据链以及30%花呗账务;2017年双11,包括整个账务库在内的全部核心系统都100%运行在OceanBase上;2019年,在TPC-C测试中跑赢Oracle一举夺冠,并在双11里达到6100万笔/秒数据处理峰值。
目前,网商银行、南京银行、中国建设银行、西安银行等多家金融机构已经在生产系统中使用OceanBase。
11月19日,OceanBase2.2版正式发布,内置MySQL兼容以及Oracle兼容两种模式,并在Oracle模式中引入了多种功能,性能和稳定性上相对2.0版本有大幅提升。
在未来两年的时间里,OceanBase 不仅实现大部分Oracle 业务的平滑迁移,即业务不修改一行代码就能够将数据库迁移过来,还将进一步完善商业智能分析的功能,以一套系统、一份数据实现交易处理+商业智能分析的混合负载(OLTP+OLAP)。
SOFAStack:解耦业务与基础设施
随着双11的交易额度呈倍速的增长,交易峰值也不断增长:从2010年的334笔/秒到2019年的54.4万笔/秒。
发展迅速的交易压力同时促进蚂蚁金服的技术架构调整:
从第一代的集中式架构,逐步走向第二代的分布式架构,再到第三代的自研平台,第四代的云平台,下一步是第五代的云原生平台。从这我们看到,蚂蚁金服已形成体系化的金融级分布式的技术架构,来支撑业务发展。
但在业务迭代发展飞速之际,如何能让业务研发团队只关注业务开发本身,其余的技术问题统一交给基础设施部门?我们看到,在交易规模和业务演进中,技术需要架构升级,但架构升级不应该成为业务的负担。
如何能让业务和基础设施解耦?这不仅是蚂蚁金服面临的难点,更是每个IT金融企业也会面临的问题。
基于此,SOFAStack应运而生。这是一套用于快速构建金融级分布式架构的中间件。它包含了构建微服务体系的众多组件,包括研发框架、RPC 框架,服务注册中心,分布式链路追踪,Metrics监控度量、分布式事务框架、服务治理平台等,助力开发者快速搭建一套完善的微服务体系。
SOFAStack将支付宝从最早的大型业务与IT交织在一起的单体系统,拆分成金融业务系统和底层IT系统,并解决这过程中新出现的可扩展性、一致性问题等问题,将数据从原有系统迁移到新系统,并管理新增的海量数据。
3分40秒!完成双11流量切换挑战
除了订单洪峰的挑战,在今年双11,蚂蚁金服团队还面临另外一个挑战:每天早上7点,5亿多的蚂蚁森林用户玩能量活动。
在双11当天,在零点后需两三个小时处理收尾流量和降级的调度任务,7点支持蚂蚁森林活动,中间做系统调度的时间只有几个小时。如何在短时间内将一个业务链路上的系统全部熄火,再把另外业务链路预热到最佳状态?不允许额外增加资源!
最后仅用3分40秒完成这个艰巨的任务!
他们将两条链路的应用部署在同一组POD里,一组处于运行态,一组处于保活态,当需要切换时,将运行态的资源收缩,流量比例调低,变为保活态,把另一组应用做反向操作变成运行态。
而应用在这么短时间热起来,需要有一定的保活流量来维系应用的基本状态,包括DB连接、通信连接、缓存等。
这里面离不开金融级云原生的重要基础设施之一的ServiceMesh。在切换过程中,ServiceMesh 将一部分流量转发到别的机器,一部分放进来用于维系应用的「热状态」。
SOFAStack双模微服务平台
作为蚂蚁金服自研的SOFAMesh,或许是业界最大ServiceMesh 案例。在2019年双十一大促中,SOFAMesh覆盖100%核心支付链路,几十万容器规模,峰值千万QPS,平均RT 0.2ms,CPU 0%-2%、MEM 15M的极低消耗,从一次更新需1-2年到10个月/次的快速迭代。
开发者在使用云原生架构的过程中,可能会遇到异构系统无法统一治理、分布式改造成本较高、技术栈绑定等问题,希望能有一种方式简单直接地将系统改造为一套分布式系统,适配兼容各种框架。
11月19日,蚂蚁金服发布了SOFAStack双模微服务平台能解决上述问题。“双模”是指传统微服务+ServiceMesh双剑合璧。目前已经过大规模金融级的线上验证,并具备以下5个特点:
1. 无侵入:无需修改业务代码实现快速接入ServiceMesh。
2. 多协议:同时支持Dubbo、Spring Cloud、SOFA框架及通信协议。
3. 跨平台:同时支持虚拟机和容器两种应用部署形态。
4. 金融级:性能、稳定性经过蚂蚁金服双十一金融级场景大规模验证。
5. 双模:同时支持传统微服务和ServiceMesh两种模式。
资料显示,SOFAStack早已开源,GitHub地址:https://github.com/sofastack
关于未来,SOFAStack还会将机房流量都统一管理;帮助更多的客户适配已有的体系;对不同的注册中心进行适配,以便能够纳入到同一个控制面来统一管理。
未来可期。
想了解更多SOFAStack技术?点击阅读原文!